package com.sheng.leetcode.year2025.month08.day10;

import org.junit.Test;

/**
 * @author by ls
 * @date 2025/8/11
 * <p>
 * 231. 2 的幂<p>
 * <p>
 * 给你一个整数 n，请你判断该整数是否是 2 的幂次方。如果是，返回 true ；否则，返回 false 。<p>
 * 如果存在一个整数 x 使得 n == 2x ，则认为 n 是 2 的幂次方。<p>
 * <p>
 * 示例 1：<p>
 * 输入：n = 1<p>
 * 输出：true<p>
 * 解释：20 = 1<p>
 * <p>
 * 示例 2：<p>
 * 输入：n = 16<p>
 * 输出：true<p>
 * 解释：24 = 16<p>
 * <p>
 * 示例 3：<p>
 * 输入：n = 3<p>
 * 输出：false<p>
 * <p>
 * 提示：<p>
 * -2^31 <= n <= 2^31 - 1<p>
 */
public class LeetCode0231 {

    @Test
    public void test() {
//        int n = 1;
//        int n = 16;
        int n = 3;
        System.out.println(new Solution0231().isPowerOfTwo(n));
    }
}

class Solution0231 {
    public boolean isPowerOfTwo(int n) {
        return n > 0 && (n & n - 1) == 0;
        // 解法 2
//        return n > 0 && (n & -n) == n;
    }
}
